package com.zhuanghdong.controller;

import com.zhuanghdong.pojo.User;
import com.zhuanghdong.service.UserService;
import com.zhuanghdong.utils.JwtHelper;
import com.zhuanghdong.utils.Result;
import com.zhuanghdong.utils.ResultCodeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

/**
 * Usercontroller模块开发
 * 包括功能： 登录、
 *          获得用户信息、
 *          用户名检查、
 *          注册、
 *          登陆验证板块
 */

@RestController
@RequestMapping("user")
@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;

    @Autowired
    private JwtHelper jwtHelper;

    /**
     * 登录板块
     * @param user
     * @return
     */
    @PostMapping("login")
    public Result login(@RequestBody User user){
        Result result=userService.login(user);
        return result;
    }

    /**
     * 获得用户信息板块
     * 根据token请求头来获取登录用户信息
     * @param token
     * @return
     */
    @GetMapping("getUserInfo")
    public Result userInfo(@RequestHeader String token){
        Result result=userService.getUserInfo(token);
        return result;
    }

    /**
     * 用户名检查板块
     * 检查用户名是否被使用板块
     * @param username
     * @return  result封装类
     */
    @PostMapping("checkUserName")
    public Result checkUserName(String username){
        Result result=userService.checkUserName(username);
        return result;
    }

    /**
     * 注册板块
     * @return result封装类
     */
    @PostMapping("regist")
    public Result regist(@RequestBody User user){
        Result result=userService.regist(user);
        return result;
    }

    /**
     * 登陆验证板块
     * @param token
     * @return result封装
     */
    @GetMapping("checkLogin")
    public Result checkLogin(@RequestHeader String token){
        //当判断 没有传入 或者 登录过期时 -> 未登录
        if(StringUtils.isEmpty(token)||jwtHelper.isExpiration(token)){
            return Result.build(null, ResultCodeEnum.NOTLOGIN);
        }
        //否则为登录成功
        return Result.ok(null);
    }
}
